package com.ruoyi.permission.service;

import com.ruoyi.permission.Dao.*;
import com.ruoyi.permission.domain.*;

import java.util.HashMap;
import java.util.List;

public interface PermiService {
    //获取单位列表
    List<UnitPermiInfo> selectAllUnitPermi();

    //根据unitId获取用户列表
    List<UnitPermiUserInfo> selectUserListByUnitId(int id);

    //根据unitId获取功能列表
    List<UnitPermiFuncInfo> selectFuncListByUnitId(int id);

    //根据unitId获取基地列表
     List<UnitPermiBaseInfo> selectBaseListByUnitId(int id);

     //根据baseId获取地块列表
    List<BasePermiBlockInfo> selectBlockListByBaseId(int id);


    //根据blockId获取设备列表
    List<BlockPermiDeviceInfo> selectDeviceListByBlockId(int id);

    //添加新单位
    int insertUnit(SerUnitPermi unitPermi);
    //添加新设备
    public int insertDevice(SerDevicePermi devicePermi);

    //为单位添加基地
    public int insertUnitPermiBase(UnitPermiBaseInfo unitBase);

    //为单位添加功能模块
    int insertUnitPermiFunc(SerUnitFunc unitFunc);

    //为单位添加用户
    int insertUnitPermiUser(SerUnitUser unitUser);

    //为基地添加地块
    int insertBasePermiBlock(BasePermiBlockInfo baseBlock);

    //为地块添加设备
    int insertBlockPermiDevice(SerBlockDevice blockDevice);

    //为设备添加虫情权限
    public int insertDevicePermiInsect(SerDeviceInsect deviceInsect);
    //新增虫情
    public int insertInsectPermi(SerInsectPermi insectPermi);
    //删除某单位的基地
    int deleteUnitPermiBase(Integer baseId);
    //删除某单位的功能模块
    int deleteUnitPermiFunc(SerUnitFunc unitFunc);
    //删除某单位的用户
    int deleteUnitPermiUser(Integer userId);
    //删除基地的某地块
    int deleteBasePermiBlock(Integer blockId);
    //删除地块的某设备
    int deleteBlockPermiDevice(SerBlockDevice blockDevice);


    /*****************************************************************/

    //根据单位获取所有设备
    List<BaseBlockPermiDeviceInfo> selectAllDeviceByUnitId(Integer unitId);

    //根据设备id获取对应的虫情
    HashMap selectInsectPermiByDeviceId(String deviceIds);

    //根据单位获取所有虫情权限
//    List<DevicePermiInsectInfo> selectAllInsectByUnitId(Integer unitId);

    /**
     * 更新单位信息
     * @param unitPermi
     * @return
     */
    int updateUnitInfo(SerUnitPermi unitPermi);

    /**
     * 更新基地信息
     * @param basePermi
     * @return
     */
    int updateBaseInfo(SerBasePermi basePermi);

    /**
     * 更新地块信息
     * @param blockPermi
     * @return
     */
    int updateBlockInfo(SerBlockPermi blockPermi);

    /**
     * 更新设备信息（并且更新各个的设备表）
     * @param devicePermi
     * @return
     */
    int updateDeviceInfo(SerDevicePermi devicePermi);

    /**
     * 根据设备id获取虫情权限
     * @param deviceId
     * @return
     */
    DevicePermiInsectList selectInsectByDeviceId(Integer deviceId);

    public int updateEzvizDeviceNameById(EzvizDeviceName ezvizDeviceName);



}
